#include "mySort.h"
#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
MySort::MySort()
{
  num=0;
  origin=NULL;
}
MySort::MySort(int num, int* origin)
{
    this->num=num;
    this->origin=new int[num];
   for(int i=0;i<num;i++)
   {
     this->origin[i]=origin[i];
   }
}
MySort::~MySort()
{
}
void MySort::changeSwap(int& a, int& b)
{
}
string MySort::paritySort()
{
   int k=0;
   if(num%2==0)
   {
    k=1;
   }
   int p=1,q=1;
   while(q)
   {
    int t=0;
    if(p)
    {
        p=0;
        int temp;
        if(k==1) 
        {
            temp=num-1;
        }
        else 
        {
            temp=num;
        }
        for(int i=1;i<temp;i+=2)
        {
            if(origin[i]>origin[i+1])
            {
                swap(origin[i],origin[i+1]);
                printNum();
                t++;
            }
        }
    }
    else
    {
       p=1;
       int temp;
       if(k==1) temp=num;
       else temp=num-1;
       for(int i=0;i<temp;i+=2)
       {
        if(origin[i]>origin[i+1])
            {
                swap(origin[i],origin[i+1]);
                printNum();
                t++;
            }
       }
       
    }
    if(t==0) q=0;
   }
   return "\0";
}
string MySort::bubbleSort()
{
   int p=1,q=1;
   while(q)
   {
      if(p)
      {
        p=0;
        int t=0;
        for(int i=0;i<num-1;i++)
        {
            if(origin[i]>origin[i+1])
            {
                swap(origin[i],origin[i+1]);
                printNum();
                t++;
            }
        }
        if(t==0)
        {
            q=0;
        }
      }
      else
      {
        p=1;
        int t=0;
        for(int i=num-1;i>0;i--)
        {
            if(origin[i]<origin[i-1])
            {
                swap(origin[i],origin[i-1]);
                printNum();
                t++;
            }
        }
        
        if(t==0)
        q=0;
      }
   }
   return "\0";
}
string MySort::printNum()
{
  for (int i = 0; i < num-1; i++)
	{
		cout << origin[i] << " ";
	}
	cout << origin[num - 1] << endl;
	return "\0";
}


